package com.xebest.web.form;

import com.xebest.web.form.base.BaseForm;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * 联动链金企业注册form
 * shihui
 */
public class PayUmApplyForm extends BaseForm {
	
	private static final long serialVersionUID = 1L;

    public interface Default{}  //默认
    public interface Enterprise{}   //企业
    public interface BindcardConfirmPerson{}   //个人绑卡
    public interface CheckState{}  //审核状态相关

    private Integer id;

    private String userName;	//客户名称
    private String userCode;	//客户code

    /**
     * 1,待审核  2,已审核  3,已驳回 4,禁用
     */
    private Integer checkState;

    /**
     * 开户网点省份编号
     */
    @NotNull(message = "开户网点省份编号不能为空", groups = Default.class)
    private String prcCd;

    /**
     * 开户网点省份名称
     */
    @NotNull(message = "开户网点省份名称不能为空", groups = Default.class)
    private String prcNm;

    /**
     * 开户网点城市编号
     */
    @NotNull(message = "开户网点城市编号不能为空", groups = Default.class)
    private String cityCd;

    /**
     * 开户网点城市名称
     */
    @NotNull(message = "开户网点城市名称不能为空", groups = Default.class)
    private String cityNm;

    /**
     * 3（企业商户）、2（个体工商户）、1（个人）
     */
    @NotNull(message = "注册类型不能为空", groups = Enterprise.class)
    private Integer subMerType;

    /**
     * 营业执照上的商户名称
     */
    private String subMerName;

    /**
     * 商户名称的业务别名，比如店铺名称
     */
    private String subMerAlias;

    private String subUserId;

    /**
     * 证件类型，1：营业执照 2：统一社会信用代码
     */
    @NotNull(message = "证件类型不能为空", groups = Enterprise.class)
    private Integer certType;

    /**
     * 证照号cert_type为1: 营业执照号码，长度为15，cert_type为2:信用代码证，长度为18位
     */
    @NotNull(message = "证照号不能为空", groups = Enterprise.class)
    private String certId;

    /**
     * 法人姓名
     * isNullAble:1
     */
    @NotNull(message = "法人姓名不能为空", groups = Enterprise.class)
    private String legalName;

    /**
     * 证件号，仅支持18位身份证号
     * isNullAble:1
     */
    @NotNull(message = "证件号不能为空", groups = Default.class)
    private String identityId;

    /**
     * 业务联系人姓名
     * isNullAble:1
     */
    @NotNull(message = "业务联系人姓名不能为空", groups = Enterprise.class)
    private String contactsName;

    /**
     * 业务联系人的手机号
     * isNullAble:1
     */
    @NotNull(message = "业务联系人的手机号不能为空", groups = Enterprise.class)
    private String contactsMobileId;

    /**
     * 开户网点编号
     */
    private String openBkCd;
    @NotNull(message = "银行id不能为空", groups = Default.class)
    private String bankId;  //银行编号
    @NotNull(message = "银行名称不能为空", groups = Default.class)
    private String bankName;    //银行名称

    /**
     * 银行账户编号
     */
    @NotNull(message = "银行账户编号不能为空", groups = Default.class)
    private String bankAccount;

    /**
     * 账户名称
     * isNullAble:1
     */
    @NotNull(message = "账户名称不能为空", groups = Default.class)
    private String bankAccountName;

    /**
     * 银行编码，如中国工商银行:ICBC，当绑卡银行列表中不支持对应gate_id时，传入其他银行：QTYH
     * isNullAble:1
     */
    @NotNull(message = "gateId不能为空", groups = Default.class)
    private String gateId;

    /**
     * 按照开户许可证上的开户行支行全称，如：中国工商银行股份有限公司金融街支行
     */
    @NotNull(message = "开户行支行全称不能为空", groups = Enterprise.class)
    private String bankBranchName;

    /**
     * 提现到账通知手机号码
     */
    private String bankMobileId;

    @NotNull(message = "tradeNo不能为空", groups = BindcardConfirmPerson.class)
    private String tradeNo; //联动在绑定法人结算卡申请接口中返回的trade_no参数
    @NotNull(message = "umUserId不能为空", groups = BindcardConfirmPerson.class)
    private String umUserId; //子商户在联动链金平台注册成功后，联动返回的子商户唯一编号
    @NotNull(message = "验证码不能为空", groups = BindcardConfirmPerson.class)
    private String verifyCode; // //子商户绑卡申请时，联动链金平台下发到子商户银行预留手机的验证码，(1)验证码有效期:9000秒，(2)最多下发次数:3次，(3)最多允许错误次数:5次

    /**
     * 变更凭证url
     */
    private String voucherImgUrl;

    /**
     * 审核时间
     */
    private Date checkDate;

    /**
     * 审核人
     */
    private String checkMan;

    /**
     * 失败原因
     */
    private String failReason;

    /**
     * 备注
     */
    @NotNull(message = "remark不能为空", groups = CheckState.class)
    private String remark;
    @NotNull(message = "ids不能为空", groups = CheckState.class)
    private List<Integer> ids;

    /**
     * 创建时间
     */
    private Date createDate;

    /**
     * 创建人
     */
    private String createUser;

    /**
     * 修改时间
     */
    private Date modifyDate;

    /**
     * 修改人
     */
    private String modifyUser;

    private String startDate;
    private String endDate;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public List<Integer> getIds() {
        return ids;
    }

    public void setIds(List<Integer> ids) {
        this.ids = ids;
    }

    public String getStartDate() {
        return startDate;
    }

    public void setStartDate(String startDate) {
        this.startDate = startDate;
    }

    public String getEndDate() {
        return endDate;
    }

    public void setEndDate(String endDate) {
        this.endDate = endDate;
    }

    public String getSubUserId() {
        return subUserId;
    }

    public void setSubUserId(String subUserId) {
        this.subUserId = subUserId;
    }

    public String getTradeNo() {
        return tradeNo;
    }

    public void setTradeNo(String tradeNo) {
        this.tradeNo = tradeNo;
    }

    public String getUmUserId() {
        return umUserId;
    }

    public void setUmUserId(String umUserId) {
        this.umUserId = umUserId;
    }

    public Date getCheckDate() {
        return checkDate;
    }

    public void setCheckDate(Date checkDate) {
        this.checkDate = checkDate;
    }

    public String getCheckMan() {
        return checkMan;
    }

    public void setCheckMan(String checkMan) {
        this.checkMan = checkMan;
    }

    public Integer getCheckState() {
        return checkState;
    }

    public void setCheckState(Integer checkState) {
        this.checkState = checkState;
    }

    public String getFailReason() {
        return failReason;
    }

    public void setFailReason(String failReason) {
        this.failReason = failReason;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getPrcCd() {
        return prcCd;
    }

    public void setPrcCd(String prcCd) {
        this.prcCd = prcCd;
    }

    public String getPrcNm() {
        return prcNm;
    }

    public void setPrcNm(String prcNm) {
        this.prcNm = prcNm;
    }

    public String getVerifyCode() {
        return verifyCode;
    }

    public void setVerifyCode(String verifyCode) {
        this.verifyCode = verifyCode;
    }

    public String getCityCd() {
        return cityCd;
    }

    public void setCityCd(String cityCd) {
        this.cityCd = cityCd;
    }

    public String getCityNm() {
        return cityNm;
    }

    public void setCityNm(String cityNm) {
        this.cityNm = cityNm;
    }

    public String getVoucherImgUrl() {
        return voucherImgUrl;
    }

    public void setVoucherImgUrl(String voucherImgUrl) {
        this.voucherImgUrl = voucherImgUrl;
    }

    public String getOpenBkCd() {
        return openBkCd;
    }

    public void setOpenBkCd(String openBkCd) {
        this.openBkCd = openBkCd;
    }

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }

    public String getCreateUser() {
        return createUser;
    }

    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }

    public Date getModifyDate() {
        return modifyDate;
    }

    public void setModifyDate(Date modifyDate) {
        this.modifyDate = modifyDate;
    }

    public String getModifyUser() {
        return modifyUser;
    }

    public void setModifyUser(String modifyUser) {
        this.modifyUser = modifyUser;
    }

    public Integer getSubMerType() {
        return subMerType;
    }

    public void setSubMerType(Integer subMerType) {
        this.subMerType = subMerType;
    }

    public String getSubMerName() {
        return subMerName;
    }

    public void setSubMerName(String subMerName) {
        this.subMerName = subMerName;
    }

    public String getSubMerAlias() {
        return subMerAlias;
    }

    public void setSubMerAlias(String subMerAlias) {
        this.subMerAlias = subMerAlias;
    }

    public Integer getCertType() {
        return certType;
    }

    public void setCertType(Integer certType) {
        this.certType = certType;
    }

    public String getCertId() {
        return certId;
    }

    public void setCertId(String certId) {
        this.certId = certId;
    }

    public String getLegalName() {
        return legalName;
    }

    public void setLegalName(String legalName) {
        this.legalName = legalName;
    }

    public String getIdentityId() {
        return identityId;
    }

    public void setIdentityId(String identityId) {
        this.identityId = identityId;
    }

    public String getContactsName() {
        return contactsName;
    }

    public void setContactsName(String contactsName) {
        this.contactsName = contactsName;
    }

    public String getContactsMobileId() {
        return contactsMobileId;
    }

    public void setContactsMobileId(String contactsMobileId) {
        this.contactsMobileId = contactsMobileId;
    }

    public String getBankAccount() {
        return bankAccount;
    }

    public void setBankAccount(String bankAccount) {
        this.bankAccount = bankAccount;
    }

    public String getBankAccountName() {
        return bankAccountName;
    }

    public void setBankAccountName(String bankAccountName) {
        this.bankAccountName = bankAccountName;
    }

    public String getGateId() {
        return gateId;
    }

    public void setGateId(String gateId) {
        this.gateId = gateId;
    }

    public String getBankBranchName() {
        return bankBranchName;
    }

    public void setBankBranchName(String bankBranchName) {
        this.bankBranchName = bankBranchName;
    }

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public String getBankMobileId() {
        return bankMobileId;
    }

    public void setBankMobileId(String bankMobileId) {
        this.bankMobileId = bankMobileId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserCode() {
        return userCode;
    }

    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }

    public String getBankId() {
        return bankId;
    }

    public void setBankId(String bankId) {
        this.bankId = bankId;
    }

    public String getBankName() {
        return bankName;
    }

    public void setBankName(String bankName) {
        this.bankName = bankName;
    }
}


